package com.mrdeer.common.base;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;

/**
 * 基础服务接口
 *
 * @param <T>
 * @param <D>
 */
public interface BaseService<T, D> extends IService<T> {

    /**
     * 新增
     *
     * @param t
     * @return
     */
    T add(T t);

    /**
     * 删除
     *
     * @param id
     * @return
     */
    boolean delete(String id);

    /**
     * 更新
     *
     * @param t
     * @return
     */
    T update(T t);

    /**
     * 通过ID查询
     *
     * @param id
     * @return
     */
    T getById(String id);

    /**
     * 获取带分页、排序
     *
     * @param dto
     * @return
     */
    Page<T> list(D dto);

    /**
     * 统一接口 模糊查询构造器
     *
     * @param dto Object Dto
     * @return QueryWrapper
     */
    LambdaQueryWrapper<T> fuzzyQuery(D dto);
}
